// SPU管理模块的接口
import request from '../../../utils/request'
// 引入ts类型
import type {
  SkuInfoData,
  SkuData,
  SpuData,
  HasSpuResponseData,
  AllTrademark,
  SpuHasImg,
  SaleAttrResponseData,
  HasSaleAttrResponseData,
} from './type'
enum API {
  // 获取已有SPU数据的接口地址
  HASSPU_URL = '/admin/product/',
  // 获取全部品牌的数据
  ALLTRADEMARK_URL = '/admin/product/baseTrademark/getTrademarkList',
  // 获取某一个SPU下的全部商品照片的数据
  IMAGE_URL = '/admin/product/spuImageList/',
  // 获取某一个SPU下全部的已有的销售属性接口地址
  SPUHASSALEATTR_URL = '/admin/product/spuSaleAttrList/',
  // 获取整个项目全部的销售属性[颜色，版本，尺码]
  ALLSALEATTR_URL = '/admin/product/baseSaleAttrList',
  // 添加一个SPU
  ADDSPU_URL = '/admin/product/saveSpuInfo',
  // 更新已有的SPU
  UPDATESPU_URL = '/admin/product/updateSpuInfo',
  // 追加一个新增的SKU的接口地址
  ADDSKU_URL = '/admin/product/saveSkuInfo',
  // 查看一个SPU下全部的SKU列表
  SKU_INFO = '/admin/product/findBySpuId/',
  // 删除一个SPU的接口地址
  REMOVESPU_URL = '/admin/product/deleteSpu/',
}
// 获取某一个三级分类已有SPU数据的接口方法
export const reqHasSpu = (
  page: number,
  limit: number,
  category3Id: string | number,
) =>
  request.get<any, HasSpuResponseData>(
    API.HASSPU_URL + `${page}/${limit}?category3Id=${category3Id}`,
  )
// 获取全部的SPU品牌的数据
export const reqAllTrademark = () =>
  request.get<any, AllTrademark>(API.ALLTRADEMARK_URL)
// 获取某一个SPU下的全部商品照片的数据接口方法
export const reqSpuImageList = (spuId: number) =>
  request.get<any, SpuHasImg>(API.IMAGE_URL + spuId)
// 获取某一个SPU下全部的已有的销售属性接口方法
export const reqSupHasSaleAttr = (spuId: number) =>
  request.get<any, SaleAttrResponseData>(API.SPUHASSALEATTR_URL + spuId)
// 获取全部的销售属性
export const reqAllSaleAttr = () =>
  request.get<any, HasSaleAttrResponseData>(API.ALLSALEATTR_URL)

// 添加或者更新SPU
// post请求需要传递数据（data:新增或者修改的SPU对象数据）
export const reqAddOrUpdateSpu = (data: SpuData) => {
  // data有id就是更新SPU请求
  if (data.id) {
    return request.post<any, any>(API.UPDATESPU_URL, data)
  } else {
    // 否则是添加SPU请求 (,data的是意思是携带data数据)
    return request.post<any, any>(API.ADDSPU_URL, data)
  }
}
// 新增的SKU的请求方法
export const reqAddSku = (data: SkuData) =>
  request.post<any, any>(API.ADDSKU_URL, data)
// 查看一个SPU下全部的SKU列表的方法
export const reqSkuList = (spuId: number | string) =>
  request.get<any, SkuInfoData>(API.SKU_INFO + spuId)
// 删除一个SPU的接口地址
export const reqRemoveSpu = (spuId: number | string) =>
  request.delete<any, any>(API.REMOVESPU_URL + spuId)
